﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using MJM.SPP.EntidadesNegocio;
using MJM.Principal;
using MJM.RPP.EntidadesNegocio;

namespace wRegPadron.frmOpciones
{
    public partial class ucGruposUsuarios : System.Web.UI.UserControl
    {
        protected static List<GrupoUsuariosEN> lst = new List<GrupoUsuariosEN>();
        protected static int IDSeleccionado;
        protected static PersonaE objPersonaE;
        protected static int codigoreg=0;
        
        public void SetPersona(PersonaE obj)
        {
            objPersonaE = obj;
        }

        public void ImprimirArbolCompleto()
        {
            tvModulos.Nodes.Clear();
            List<ModuloEN> lstModulos = new List<ModuloEN>();
            List<SubOpcionEN> lstSubOpcion = new List<SubOpcionEN>();
            List<ControlEN> lstControl=new List<ControlEN>();
            List<ProgramaEN> lstPrograma = new List<ProgramaEN>();
            lstPrograma = MediadorCN.GetPrograma().Listar();

            TreeNode nodo,ni;
            for (int i = 0; i < lstPrograma.Count; i++)
            {
                nodo = new TreeNode();
                nodo.Text = lstPrograma[i].PROMUN_chNOMPRO;
                nodo.Value = lstPrograma[i].PROMUN_inID.ToString();
                nodo.ShowCheckBox = true;
                tvModulos.Nodes.Add(nodo);
                lstModulos = MediadorCN.GetModulo().Listar(Convert.ToInt32(tvModulos.Nodes[i].Value));
                int n;              
                for (int j = 0; j < lstModulos.Count; j++)
                {
                    nodo = new TreeNode();
                    nodo.ShowCheckBox = true;
                    nodo.Text = lstModulos[j].OPTGEN_chNOMMEN;
                    nodo.Value = Convert.ToString(lstModulos[j].OPTGEN_P_inID);
                    tvModulos.Nodes[i].ChildNodes.Add(nodo);
                    lstSubOpcion = MediadorCN.GetSubOpcion().Listar(lstModulos[j].OPTGEN_P_inID);
                    n = lstSubOpcion.Count;
                    for (int z = 0; z < n; z++)
                    {
                        ni = new TreeNode();
                        ni.Value = lstSubOpcion[z].SUBOPT_P_inID.ToString();
                        ni.Text = lstSubOpcion[z].SUBOPT_chNOMSOP;
                        ni.ShowCheckBox = true;
                        tvModulos.Nodes[i].ChildNodes[j].ChildNodes.Add(ni);
                        lstControl = MediadorCN.GetControl().Listar(lstSubOpcion[z].SUBOPT_P_inID);
                        /*
                        for (int h = 0; h < lstControl.Count;h++ )
                        {
                            ni = new TreeNode();
                            ni.Value = lstControl[h].OPTCON_P_inID.ToString();
                            ni.Text = lstControl[h].OPTCON_chNOMCON;
                            ni.ShowCheckBox = true;
                            tvModulos.Nodes[i].ChildNodes[j].ChildNodes[z].ChildNodes.Add(ni);
                        }*/
                    }
                }
            }
            for (int i = 0; i < tvModulos.Nodes[0].ChildNodes.Count; i++)
            {
                tvModulos.Nodes[0].ChildNodes[i].Collapse();
            }

            tvModulos.DataBind();
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                btnAceptar.Visible = false;
                gvGrupos.DataSource = MediadorCN.GetGrupoUsuario().ListarGeneral();
                gvGrupos.DataBind();
                ImprimirArbolCompleto();

                SubOpcionEN objSubOpcionEN = MediadorCN.GetSubOpcion().ObtenerTexto("MenuGrupos");
                lblTitulo.Text = objSubOpcionEN.SUBOPT_chNOMSOP;
                lblDescripcion.Text = objSubOpcionEN.SUBOPT_chDESSOP;
                pRestriccion.Visible = false;
                btnGuardar.Visible = true;
            }
        }

        protected void gvGrupos_Seleccionar(object sender, GridViewCommandEventArgs e)
        { 
            int index=-1;
            int ID;
            List<AccesoGrupoEN> lstAccesoGrupoEN1 = new List<AccesoGrupoEN>(), lstAccesoGrupoEN2 = new List<AccesoGrupoEN>(), lstAccesoGrupoEN3 = new List<AccesoGrupoEN>(), lstAccesoGrupoEN4 = new List<AccesoGrupoEN>();
            
            List<ModuloEN> lstModulos = new List<ModuloEN>();
            if (e.CommandName == "Eliminar")
            {
                index = Convert.ToInt32(e.CommandArgument);
                GridViewRow row = gvGrupos.Rows[index];
                ID = Convert.ToInt32(Server.HtmlDecode(row.Cells[0].Text));
                hfIdEliminacion.Value = ID.ToString();
                ModalPopupExtender1.Show();
            }
            else if (e.CommandName == "Seleccionar")
            {
                tvEditar.Nodes.Clear();
                index = Convert.ToInt32(e.CommandArgument);
                GridViewRow row = gvGrupos.Rows[index];
                ID = Convert.ToInt32(Server.HtmlDecode(row.Cells[0].Text));
                IDSeleccionado = ID;
                lblGrupo.Text = Server.HtmlDecode(row.Cells[1].Text);
                lstAccesoGrupoEN1 = MediadorCN.GetAccesoGrupo().Listar_Programa_Grupo(ID);
                TreeNode n;
                for (int i = 0; i < lstAccesoGrupoEN1.Count; i++)
                {
                    n = new TreeNode();
                    n.Value = lstAccesoGrupoEN1[i].PERGRU_P_inID.ToString();
                    n.Text = lstAccesoGrupoEN1[i].PROMUN_chNOMPRO;
                    n.ShowCheckBox = true;
                    if (lstAccesoGrupoEN1[i].PERGRU_inACT == 1)
                        n.Checked = true;
                    else
                        n.Checked = false;
                    tvEditar.Nodes.Add(n);
                    lstAccesoGrupoEN2 = MediadorCN.GetAccesoGrupo().Listar_Modulos_Grupo(ID, lstAccesoGrupoEN1[i].PROMUN_inID);
                    for (int j = 0; j < lstAccesoGrupoEN2.Count; j++)
                    {
                        n = new TreeNode();
                        n.Value = lstAccesoGrupoEN2[j].PERGRU_P_inID.ToString();
                        n.Text = lstAccesoGrupoEN2[j].OPTGEN_chNOMMEN;
                        n.ShowCheckBox = true;
                        if (lstAccesoGrupoEN2[j].PERGRU_inACT == 1)
                            n.Checked = true;
                        tvEditar.Nodes[i].ChildNodes.Add(n);
                        lstAccesoGrupoEN3 = MediadorCN.GetAccesoGrupo().Listar_Opciones_Grupo(ID, lstAccesoGrupoEN2[j].OPTGEN_P_inID, lstAccesoGrupoEN1[i].PROMUN_inID);
                        for (int z = 0; z < lstAccesoGrupoEN3.Count; z++)
                        {
                            n = new TreeNode();
                            n.Value = lstAccesoGrupoEN3[z].PERGRU_P_inID.ToString();
                            n.Text = lstAccesoGrupoEN3[z].SUBOPT_chNOMSOP;
                            n.ShowCheckBox = true;
                            if (lstAccesoGrupoEN2[j].PERGRU_inACT == 1 && lstAccesoGrupoEN3[z].PERGRU_inACT == 1)
                                n.Checked = true;
                            tvEditar.Nodes[i].ChildNodes[j].ChildNodes.Add(n);
                            lstAccesoGrupoEN4 = MediadorCN.GetAccesoGrupo().Listar_Controles_Grupo(ID, lstAccesoGrupoEN2[j].OPTGEN_P_inID, lstAccesoGrupoEN3[z].SUBOPT_P_inID, lstAccesoGrupoEN1[i].PROMUN_inID);
                        }
                    }
                    tvEditar.Nodes[i].Expand();
                    for (int j = 0; j < lstAccesoGrupoEN2.Count; j++)
                    {
                        tvEditar.Nodes[i].ChildNodes[j].Collapse();
                    }
                }
                if (tvEditar.Nodes.Count > 0)
                {
                    Panel1.Visible = true;
                    lblErrorEditar.Text = "";
                }
            }
        }
        
        protected void gvGrupos_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvGrupos.PageIndex = e.NewPageIndex;
            gvGrupos.DataSource = lst;
            gvGrupos.DataBind();
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            if (txtNombreGrupo.Text != "")
            {
                if (txtDescripcion.Text != "")
                {
                    GrupoUsuariosEN obj = new GrupoUsuariosEN();
                    AccesoGrupoEN objAccesoGrupoEN;

                    obj.USUGRU_chNOMGRU = txtNombreGrupo.Text;
                    obj.USUGRU_chDESGRU = txtDescripcion.Text;
                    obj.SEGU_inFLAELI = 1;
                    int codigo = MediadorCN.GetGrupoUsuario().Insertar(obj);
                    if (codigo >= 1)
                    {
                        for (int h = 0; h < tvModulos.Nodes.Count; h++)
                        {
                            objAccesoGrupoEN = new AccesoGrupoEN();
                            objAccesoGrupoEN.OPTGEN_P_inID = 0;
                            objAccesoGrupoEN.SUBOPT_P_inID = 0;
                            objAccesoGrupoEN.OPTCON_P_inID = 0;
                            objAccesoGrupoEN.USUGRU_P_inID1 = codigo;
                            objAccesoGrupoEN.PROMUN_inID = Convert.ToInt32(tvModulos.Nodes[h].Value);
                            if (tvModulos.Nodes[h].Checked)
                                objAccesoGrupoEN.PERGRU_inACT = 1;
                            else
                                objAccesoGrupoEN.PERGRU_inACT = 0;
                            MediadorCN.GetAccesoGrupo().Insertar(objAccesoGrupoEN);

                            for (int i = 0; i < tvModulos.Nodes[h].ChildNodes.Count; i++)
                            {
                                objAccesoGrupoEN = new AccesoGrupoEN();
                                objAccesoGrupoEN.PROMUN_inID = Convert.ToInt32(tvModulos.Nodes[h].Value);
                                objAccesoGrupoEN.OPTGEN_P_inID = Convert.ToInt32(tvModulos.Nodes[h].ChildNodes[i].Value);
                                objAccesoGrupoEN.SUBOPT_P_inID = 0;
                                objAccesoGrupoEN.OPTCON_P_inID = 0;
                                objAccesoGrupoEN.USUGRU_P_inID1 = codigo;
                                if (tvModulos.Nodes[h].ChildNodes[i].Checked && tvModulos.Nodes[h].Checked)
                                    objAccesoGrupoEN.PERGRU_inACT = 1;
                                else
                                    objAccesoGrupoEN.PERGRU_inACT = 0;
                                MediadorCN.GetAccesoGrupo().Insertar(objAccesoGrupoEN);

                                for (int j = 0; j < tvModulos.Nodes[h].ChildNodes[i].ChildNodes.Count; j++)
                                {
                                    objAccesoGrupoEN = new AccesoGrupoEN();
                                    objAccesoGrupoEN.PROMUN_inID = Convert.ToInt32(tvModulos.Nodes[h].Value);
                                    objAccesoGrupoEN.OPTGEN_P_inID = Convert.ToInt32(tvModulos.Nodes[h].ChildNodes[i].Value);
                                    objAccesoGrupoEN.SUBOPT_P_inID = Convert.ToInt32(tvModulos.Nodes[h].ChildNodes[i].ChildNodes[j].Value);
                                    objAccesoGrupoEN.OPTCON_P_inID = 0;
                                    objAccesoGrupoEN.USUGRU_P_inID1 = codigo;
                                    if (tvModulos.Nodes[h].ChildNodes[i].ChildNodes[j].Checked && tvModulos.Nodes[h].ChildNodes[i].Checked)
                                        objAccesoGrupoEN.PERGRU_inACT = 1;
                                    else
                                        objAccesoGrupoEN.PERGRU_inACT = 0;
                                    MediadorCN.GetAccesoGrupo().Insertar(objAccesoGrupoEN);

                                    for (int z = 0; z < tvModulos.Nodes[h].ChildNodes[i].ChildNodes[j].ChildNodes.Count; z++)
                                    {
                                        objAccesoGrupoEN = new AccesoGrupoEN();
                                        objAccesoGrupoEN.PROMUN_inID = Convert.ToInt32(tvModulos.Nodes[h].Value);
                                        objAccesoGrupoEN.OPTGEN_P_inID = Convert.ToInt32(tvModulos.Nodes[h].ChildNodes[i].Value);
                                        objAccesoGrupoEN.SUBOPT_P_inID = Convert.ToInt32(tvModulos.Nodes[h].ChildNodes[i].ChildNodes[j].Value);
                                        objAccesoGrupoEN.OPTCON_P_inID = Convert.ToInt32(tvModulos.Nodes[h].ChildNodes[i].ChildNodes[j].ChildNodes[z].Value);
                                        objAccesoGrupoEN.USUGRU_P_inID1 = codigo;
                                        if (tvModulos.Nodes[h].ChildNodes[i].ChildNodes[j].ChildNodes[z].Checked && tvModulos.Nodes[h].ChildNodes[i].ChildNodes[j].Checked)
                                            objAccesoGrupoEN.PERGRU_inACT = 1;
                                        else
                                            objAccesoGrupoEN.PERGRU_inACT = 0;
                                        MediadorCN.GetAccesoGrupo().Insertar(objAccesoGrupoEN);
                                    }
                                }
                            }
                        }
                        List<RestriccionModEN> lstrestri = MediadorCN.GetRestriccionMod().Listar();
                        List<RestriccionModEN> aux = new List<RestriccionModEN>();
                        RestriccionGrupoEN objRestriccionGrupoEN;
                        // List<RestriccionGrupoEN> lstGrupo=objRestriccionGrupoCN.ListarGeneral(IDSeleccionado);
                        int codi;
                        //int id = 0;
                        codigoreg = codigo;
                        if (lstrestri.Count > 0)
                        {
                            for (int i = 0; i < lstrestri.Count; i++)
                            {
                                for (int j = 0; j < tvModulos.Nodes.Count; j++)
                                {
                                    if (lstrestri[i].Nombre == tvModulos.Nodes[j].Text && tvModulos.Nodes[j].Checked)
                                    {
                                        if (!MediadorCN.GetRestriccionGrupo().Existe(lstrestri[i].RESEXT_P_inID, codigo))
                                        {
                                            objRestriccionGrupoEN = new RestriccionGrupoEN();
                                            objRestriccionGrupoEN.USUGRU_P_inID = codigo;
                                            objRestriccionGrupoEN.RESEXT_P_inID = lstrestri[i].RESEXT_P_inID;
                                            codi = MediadorCN.GetRestriccionGrupo().Insertar(objRestriccionGrupoEN);
                                            aux.Add(lstrestri[i]);

                                        }
                                    }
                                }
                            }
                            if (aux.Count > 0)
                            {
                                cblRegRestriccion.DataSource = aux;
                                cblRegRestriccion.DataValueField = "RESEXT_P_inID";
                                cblRegRestriccion.DataTextField = "Nombre";
                                cblRegRestriccion.DataBind();

                                btnGuardar.Visible = false;
                                pRestriccion.Visible = true;
                                btnAceptarRestri.Visible = true;
                                lblErrorGuardar.Text = "";
                                txtDescripcion.Text = "";
                                txtNombreGrupo.Text = "";

                            }
                            else
                            {
                                gvGrupos.DataSource = MediadorCN.GetGrupoUsuario().ListarGeneral();
                                gvGrupos.DataBind();
                                txtDescripcion.Text = "";
                                txtNombreGrupo.Text = "";
                                pRestriccion.Visible = false;
                                btnGuardar.Visible = true;
                            }
                        }
                        else
                        {
                            lblErrorGuardar.Text = "Se registró el grupo correctamente.";
                            gvGrupos.DataSource = MediadorCN.GetGrupoUsuario().ListarGeneral();
                            gvGrupos.DataBind();
                            txtDescripcion.Text = "";
                            txtNombreGrupo.Text = "";
                            pRestriccion.Visible = false;
                            btnGuardar.Visible = true;
                        }
                    }
                    else
                        lblErrorGuardar.Text = "El grupo no pudo ser insertado.";
                }
                else
                {
                    lblErrorGuardar.Text = "Ingrese la descripción del grupo.";
                }
            }                
            else
            {
                lblErrorGuardar.Text = "Ingrese el nombre del grupo.";
            }
        }

        protected void CambiarTab(object sender, EventArgs e)
        {
            txtDescripcion.Text = "";
            txtNombreGrupo.Text = "";
            lblErrorEditar.Text = "";
            for (int i = 0; i < tvModulos.Nodes[0].ChildNodes.Count; i++)
            {
                tvModulos.Nodes[0].ChildNodes[i].Checked = false;
                for (int j = 0; j < tvModulos.Nodes[0].ChildNodes[i].ChildNodes.Count; j++)
                {
                    tvModulos.Nodes[0].ChildNodes[i].ChildNodes[j].Checked = false;
                }
            }
        }

        protected void btnEditar_Click(object sender, EventArgs e)
        {
            AccesoGrupoEN obj;
            int suma = 0;
            int cant = tvEditar.Nodes.Count;
            for (int i = 0; i < tvEditar.Nodes.Count; i++)
            {
                obj = new AccesoGrupoEN();
                obj.PERGRU_P_inID = Convert.ToInt32(tvEditar.Nodes[i].Value);
                obj.PERGRU_inFLAELI = 1;
                if (tvEditar.Nodes[i].Checked)
                    obj.PERGRU_inACT = 1;
                else
                    obj.PERGRU_inACT = 0;
                suma = suma + MediadorCN.GetAccesoGrupo().Modificar(obj);
                cant = cant + tvEditar.Nodes[i].ChildNodes.Count;
                for (int j = 0; j < tvEditar.Nodes[i].ChildNodes.Count; j++)
                {
                    obj = new AccesoGrupoEN();
                    obj.PERGRU_P_inID = Convert.ToInt32(tvEditar.Nodes[i].ChildNodes[j].Value);
                    obj.PERGRU_inFLAELI = 1;
                    if (tvEditar.Nodes[i].ChildNodes[j].Checked && tvEditar.Nodes[i].Checked)
                        obj.PERGRU_inACT = 1;
                    else
                        obj.PERGRU_inACT = 0;
                    suma = suma + MediadorCN.GetAccesoGrupo().Modificar(obj);
                    cant = cant + tvEditar.Nodes[i].ChildNodes[j].ChildNodes.Count;
                    for (int z = 0; z < tvEditar.Nodes[i].ChildNodes[j].ChildNodes.Count; z++)
                    {
                        obj = new AccesoGrupoEN();
                        obj.PERGRU_P_inID = Convert.ToInt32(tvEditar.Nodes[i].ChildNodes[j].ChildNodes[z].Value);
                        obj.PERGRU_inFLAELI = 1;
                        if (tvEditar.Nodes[i].ChildNodes[j].ChildNodes[z].Checked && tvEditar.Nodes[i].ChildNodes[j].Checked)
                            obj.PERGRU_inACT = 1;
                        else
                            obj.PERGRU_inACT = 0;
                        suma = suma + MediadorCN.GetAccesoGrupo().Modificar(obj);
                        cant = cant + tvEditar.Nodes[i].ChildNodes[j].ChildNodes[z].ChildNodes.Count;
                        for (int k = 0; k < tvEditar.Nodes[i].ChildNodes[j].ChildNodes[z].ChildNodes.Count; k++)
                        {
                            obj = new AccesoGrupoEN();
                            obj.PERGRU_P_inID = Convert.ToInt32(tvEditar.Nodes[i].ChildNodes[j].ChildNodes[z].ChildNodes[k].Value);
                            obj.PERGRU_inFLAELI = 1;
                            if (tvEditar.Nodes[i].ChildNodes[j].ChildNodes[z].ChildNodes[k].Checked && tvEditar.Nodes[i].ChildNodes[j].ChildNodes[z].Checked)
                                obj.PERGRU_inACT = 1;
                            else
                                obj.PERGRU_inACT = 0;
                            suma = suma + MediadorCN.GetAccesoGrupo().Modificar(obj);                         
                        }
                    }
                }
            }            
            if (cant == suma)
            {
                List<RestriccionModEN> lst = MediadorCN.GetRestriccionMod().Listar();
                List<RestriccionModEN> aux = new List<RestriccionModEN>();
                RestriccionGrupoEN objRestriccionGrupoEN;                
                int codi;
                if (lst.Count > 0)
                {
                    for (int i = 0; i < lst.Count; i++)
                    {
                        for (int j = 0; j < tvEditar.Nodes.Count; j++)
                        {
                            if (lst[i].Nombre == tvEditar.Nodes[j].Text && tvEditar.Nodes[j].Checked)
                            {
                                if (!MediadorCN.GetRestriccionGrupo().Existe(lst[i].RESEXT_P_inID, IDSeleccionado))
                                {
                                    objRestriccionGrupoEN = new RestriccionGrupoEN();
                                    objRestriccionGrupoEN.USUGRU_P_inID = IDSeleccionado;
                                    objRestriccionGrupoEN.RESEXT_P_inID = lst[i].RESEXT_P_inID;
                                    codi = MediadorCN.GetRestriccionGrupo().Insertar(objRestriccionGrupoEN);
                                    
                                }
                                    aux.Add(lst[i]);
                            }
                        }
                        //cblRestricciones.Items.Add();
                    }

                    lblRestriccion.Visible = true;
                    cblRestricciones.Visible = true;
                    cblRestricciones.DataSource = aux;
                    cblRestricciones.DataValueField = "RESEXT_P_inID";
                    cblRestricciones.DataTextField = "Nombre";
                    cblRestricciones.DataBind();

                    btnEditar.Visible = false;
                    btnAceptar.Visible = true;
                }
                else
                {
                    lblErrorEditar.Text = "Se actualizaron los permisos satisfactoriamente";
                    lblRestriccion.Visible = false;
                    cblRestricciones.Visible = false;
                    btnEditar.Visible = false;
                    btnAceptar.Visible = false;
                }
            }
            else
                lblErrorEditar.Text = "Algunos permisos no han podido ser actualizados";
        }

        protected void tvModulos_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
        {
        }

        protected void tvModulos_SelectedNodeChanged(object sender, EventArgs e)
        {
            if (tvModulos.SelectedNode.Checked)
                tvModulos.SelectedNode.Checked = false;
            else
            {
                tvModulos.SelectedNode.Checked = true;
                if (tvModulos.SelectedNode.Parent != null)
                {
                    tvModulos.SelectedNode.Parent.Checked = true;
                    if (tvModulos.SelectedNode.Parent.Parent != null)
                        tvModulos.SelectedNode.Parent.Parent.Checked = true;
                }
            }

            int n = tvModulos.SelectedNode.ChildNodes.Count;           

            for (int i = 0; i < n; i++)
            {
                if (tvModulos.SelectedNode.Checked)
                {
                    tvModulos.SelectedNode.ChildNodes[i].Checked = true;
                    for (int j = 0; j < tvModulos.SelectedNode.ChildNodes[i].ChildNodes.Count; j++)
                    {
                        tvModulos.SelectedNode.ChildNodes[i].ChildNodes[j].Checked = true;
                    }
                }
                else
                {
                    tvModulos.SelectedNode.ChildNodes[i].Checked = false;
                    for (int j = 0; j < tvModulos.SelectedNode.ChildNodes[i].ChildNodes.Count; j++)
                    {
                        tvModulos.SelectedNode.ChildNodes[i].ChildNodes[j].Checked = false;
                    }
                }
            }
        }

        protected void tvEditar_SelectedNodeChanged(object sender, EventArgs e)
        {
            if (tvEditar.SelectedNode.Checked)
                tvEditar.SelectedNode.Checked = false;
            else
            {
                tvEditar.SelectedNode.Checked = true;
                if (tvEditar.SelectedNode.Parent != null)
                {
                    tvEditar.SelectedNode.Parent.Checked = true;
                    if (tvEditar.SelectedNode.Parent.Parent != null)
                        tvEditar.SelectedNode.Parent.Parent.Checked = true;
                }
            }

            int n = tvEditar.SelectedNode.ChildNodes.Count;

            for (int i = 0; i < n; i++)
            {
                if (tvEditar.SelectedNode.Checked)
                {
                    tvEditar.SelectedNode.ChildNodes[i].Checked = true;
                    for (int j = 0; j < tvEditar.SelectedNode.ChildNodes[i].ChildNodes.Count; j++)
                    {
                        tvEditar.SelectedNode.ChildNodes[i].ChildNodes[j].Checked = true;
                    }
                }
                else
                {
                    tvEditar.SelectedNode.ChildNodes[i].Checked = false;
                    for (int j = 0; j < tvEditar.SelectedNode.ChildNodes[i].ChildNodes.Count; j++)
                    {
                        tvEditar.SelectedNode.ChildNodes[i].ChildNodes[j].Checked = false;
                    }
                }
            }
            //tvEditar.SelectedNode = tvEditar.Nodes[0];
        }

        protected void tvEditar_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
        {

        }

        protected void btnAceptar_Click(object sender, EventArgs e)
        {
            int n = cblRestricciones.Items.Count;
            List<RestriccionGrupoEN> lst = MediadorCN.GetRestriccionGrupo().Listar(IDSeleccionado);
            int sum = 0;
            //RestriccionGrupoEN obj;
            for (int i = 0; i < n; i++)
            {
                if (cblRestricciones.Items[i].Selected)
                    lst[i].RESGRU_inFLAELI = 2;
                MediadorCN.GetRestriccionGrupo().Modificar(lst[i]);
                sum++;
            }
            if (sum == n)
            {
                btnAceptar.Visible = false;
                lblRestriccion.Visible = false;
                cblRestricciones.Visible = false;
                CambiarTab(sender, e);
                lblErrorEditar.Text = "Se actualizaron los datos correctamente.";
                btnEditar.Visible = true;
                Panel1.Visible = false;
            }
        }

        protected void btnAceptarRestri_Click(object sender, EventArgs e)
        {
            int n = cblRegRestriccion.Items.Count;
            List<RestriccionGrupoEN> lsta = MediadorCN.GetRestriccionGrupo().Listar(codigoreg);
            int sum = 0;
            //RestriccionGrupoEN obj;
            for (int i = 0; i < n; i++)
            {
                if (cblRegRestriccion.Items[i].Selected)
                    lsta[i].RESGRU_inFLAELI = 2;
                MediadorCN.GetRestriccionGrupo().Modificar(lsta[i]);
                sum++;
            }
            if (sum == n)
            {
                ImprimirArbolCompleto();
                btnAceptarRestri.Visible = false;
                pRestriccion.Visible = false;
                //cblRestricciones.Visible = false;

                gvGrupos.DataSource = MediadorCN.GetGrupoUsuario().ListarGeneral();
                gvGrupos.DataBind();
                CambiarTab(sender, e);
                lblErrorGuardar.Text = "Se registró el grupo correctamente.";
                btnGuardar.Visible = true;
               // Panel1.Visible = false;
            }
        }

        protected void btnSi_Click(object sender, EventArgs e)
        {
            int idGrupo = Convert.ToInt32(hfIdEliminacion.Value);
            MediadorCN.GetGrupoUsuario().Eliminar(idGrupo);
            lst = MediadorCN.GetGrupoUsuario().ListarGeneral();
            gvGrupos.DataSource = lst;
            gvGrupos.DataBind();
        }
    }
}